package com.iplatform.iplatformuser.privilege.dao;

import com.iplatform.module.privilege.PriManagerBean;
import com.iplatform.module.privilege.PriMenuBean;
import com.iplatform.module.privilege.PriRoleBean;
import com.iplatform.module.privilege.dto.PriManagerDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * Title: PriManagerMapper
 * Description:
 *
 * @author RayLLi
 * @date 2018年8月27日
 */
@Mapper
public interface PriManagerMapper {

    /**
     * Title: getManagerByCodeAndPassword
     * Description: 根据用户账号密码获取用户信息
     *
     * @param priManager
     * @return
     */
    PriManagerBean getManagerByCodeAndPassword(PriManagerBean priManager);

    /**
     * Title: queryUserRole
     * Description:  获取用户角色
     *
     * @param mgrId
     * @return
     */
    Map<String, String> getUserRole(String mgrId);

    /**
     * Title: loadAllMenuOpt
     * Description: 获取所有菜单操作
     *
     * @return
     */
    List<PriMenuBean> loadAllMenu();

    /**
     * Title: queryMenuAndOptByUser
     * Description: 查询所有操作
     *
     * @param priManager
     * @return
     */
    List<Map<String, String>> queryMenuAndOptByUser(PriManagerBean priManager);

    /**
     * Title: deleteManager
     * Description: 删除管理员
     *
     * @param mgrId
     * @return
     */
    int deleteManager(String mgrId);


    /**
     * Title: queryHomeUrl
     * Description: 查询首页信息
     *
     * @param mgrId
     * @return
     */
    Map<String, String> queryHomeUrl(String mgrId);

    /**
     * Title: queryHomeUrlForAdmin
     *
     * @return
     */
    Map<String, String> queryHomeUrlForAdmin();


    /**
     * Title: loadManagers
     * Description: 读取所有管理员信息
     *
     * @param formMap
     * @return
     */
    List<PriManagerDto> loadManagers(Map<String, String> formMap);

    /**
     * 根据userCode查询
     *
     * @param formMap
     * @return
     */
    List<PriManagerBean> queryByCode(Map<String, String> formMap);

    /**
     * Title: insertManager
     * Description: 新增管理员
     *
     * @param priManagerDto
     * @return
     */
    int insertManager(PriManagerDto priManagerDto);
    //com.boco.cloud.auth.bean.

    /**
     * Title: batchDeleteManager
     * Description: 批量删除管理员
     *
     * @param mgrIds
     */
    void batchDeleteManager(String[] mgrIds);

    /**
     * Title: setStopOrActive
     * Description: 设置账号停用或启用
     *
     * @param mgrId
     */
    void setStopOrActive(String mgrId);

    /**
     * Title: updateManager
     * Description: 修改管理员s
     *
     * @param priManagerDto
     * @return
     */
    int updateManager(PriManagerDto priManagerDto);
    //com.boco.cloud.auth.bean.

    /**
     * Title: queryCodeAndName
     * Description:联想查询
     *
     * @return
     */
    List<Map<String, String>> queryCodeAndName();

    int checkAdd(@Param("userCode") String userCode);

    int checkUpdate(@Param("userCode") String userCode, @Param("mgrId") String mgrId);

    PriManagerDto queryByMgrId(@Param("mgrId") String mgrId);

    void updateManagerRoleId(@Param("roleId") String roleId, @Param("mgrId") String mgrId);

    void saveManagerRoleId(Map<String, String> map);

    String getManagerRoleId(@Param("mgrId") String mgrId);

    /**
     * 删除用户绑定的所有角色
     *
     */
    void delManagerRoleId(String[] mgrIds);

    /**
     * 绑定
     * @param mgrId
     * @param roleId
     */
    void binds(@Param("mgrId") String mgrId, @Param("roleId") String roleId);

    /**
     * 查找角色信息
     * @param mgrId
     * @return
     */
    List<PriRoleBean> findRoles(@Param("mgrId") String mgrId);

    /**
     * 查询排序码
     * @param mgrId
     * @return
     */
    List<BigDecimal> findOrds(@Param("mgrId") String mgrId);

    /**
     * 查询需要修改排序码的用户id
     * @param orderId
     * @param mgrId
     * @return
     */
    List<String> findMgrIds(@Param("orderId") BigDecimal orderId, @Param("mgrId") String mgrId);

    /**
     * 排序码加1
     * @param mgrIds
     */
    void managerOrderAddOne(@Param("mgrIds") List<String> mgrIds);
}
